package com.autumn.zero.application.services;

/**
 * 编辑服务
 * 
 * @author 杨昌国 2018-11-16 16:55:52
 * @param <TPrimaryKey> 主键类型
 * @param <TAddInput> 添加输入类型
 * @param <TUpdateInput> 更新输入类型
 * @param <TOutput> 输出类型
 * @param <TQueryItemResult> 查询项目结果类型
 */
public interface IZeroEditAppService<TPrimaryKey, TAddInput, TUpdateInput, TOutput, TQueryItemResult>
		extends IZeroQueryAppService<TQueryItemResult>, IZeroAppModule {

	/**
	 * 添加
	 * 
	 * @param input 输入
	 * @return
	 */
	TOutput add(TAddInput input);

	/**
	 * 更新
	 * 
	 * @param input 输入
	 * @return
	 */
	TOutput update(TUpdateInput input);

	/**
	 * 根据主键查询
	 * 
	 * @param id 主键
	 * @return
	 */
	TOutput queryById(TPrimaryKey id);

	/**
	 * 根据主键删除
	 * 
	 * @param id 主键
	 */
	void deleteById(TPrimaryKey id);
}
